package com.mayn.runWeb;

import java.io.File;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.dtgrid.controller.ExportController;
import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Interceptors;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.core.JFinal;
import com.jfinal.ext.handler.ContextPathHandler;
import com.jfinal.kit.PropKit;
import com.jfinal.render.ViewType;
import com.jfinal.template.Engine;
import com.mayn.common.JfinalInit;
import com.mayn.util.QuartzPluginUtil;
import com.mayn.util.QuartzUtil;
import com.mayn.web.dsr.DsrController;
import com.mayn.web.express.ExpressController;
import com.mayn.web.fee.FeeController;
import com.mayn.web.index.IndexController;

/**
 * API引导式配置
 */
public class StartConfig extends JFinalConfig {

	private static final Logger LOG = LoggerFactory.getLogger(StartConfig.class);

	/**
	 * 配置常量
	 */
	public void configConstant(Constants me) {
		// 加载配置文件
		if (JfinalInit.getConfigFile().length() > 0) {
			PropKit.use(new File(JfinalInit.getConfigFile()));
		} else {
			PropKit.use(JfinalInit.defaultConfFile);
		}
		if (PropKit.containsKey("devMode")) {
			me.setDevMode(PropKit.getBoolean("devMode", false));
		}
		me.setViewType(ViewType.FREE_MARKER);
	}

	/**
	 * 配置路由
	 */
	public void configRoute(Routes me) {
		// 第三个参数为该Controller的视图存放路径
		me.add("/", IndexController.class, "/index");
		me.add("/express", ExpressController.class, "/express");
		me.add("/dsr", DsrController.class, "/dsr");
		me.add("/fee", FeeController.class, "/fee");
		me.add("/dtgrid", ExportController.class, "/dtGrid");
	}

	/**
	 * 配置插件
	 */

	public void configPlugin(Plugins me) {
		// 加载数据库插件
		JfinalInit.InitDb(true, me);
		LOG.info("Web环境运行Jfinal...");
		/** ---------定时任务 Quartz 插件----------- **/
		QuartzUtil q = new QuartzUtil();
		q.setJobsFile("jobs.properties");
		QuartzPluginUtil quartzPlugin = new QuartzPluginUtil(q);
		me.add(quartzPlugin);
	}

	/**
	 * 配置全局拦截器
	 */
	public void configInterceptor(Interceptors me) {

	}

	/**
	 * 配置处理器
	 */
	public void configHandler(Handlers me) {
		me.add(new ContextPathHandler("CPATH"));
	}

	public void afterJFinalStart() {

	}

	/**
	 * 建议使用 JFinal 手册推荐的方式启动项目 运行此 main
	 * 方法可以启动项目，此main方法可以放置在任意的Class类定义中，不一定要放于此
	 */
	public static void main(String[] args) {
		JFinal.start("src/main/webapp", 88, "/", 5);
	}

	@Override
	public void configEngine(Engine me) {
		// TODO Auto-generated method stub
		
	}

}
